來到Day15過一半了,覺得這半個月真的吸收了滿多新的內容,
那這次也是要以PostgreSQL應用在flask方式,
但這次練習的是用sqpalchemy套件來實作,
那以下開始~
SQLAlchemy 是一個Python的資料庫工具和物件關聯映射(ORM)庫,
它允許開發者使用Python程式碼來操作關聯式資料庫。
SQLAlchemy 提供了高度靈活的資料庫操作和查詢功能,同時支援多種資料庫系統,
是開發Python應用程式時的強大工具。
1.將資料庫表格的結構定義寫在models分開,增加管理性
models.py
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class ***1(Base):
__tablename__ = '***'
id = Column(Integer, primary_key=True)
date = Column(String)
project_id = Column(Integer)
class ***2(Base):
__tablename__ = '***'
id = Column(Integer, primary_key=True)
logdate = Column(String)
filename = Column(String)
width = Column(Integer)
height = Column(Integer)
date = Column(Integer, ForeignKey('***.id'))
*** = relationship('***', backref='***')
2.在views_sql.py把連線資訊設定寫好,創建一個 Session類別的實例
sql.py
from flask import Flask, request, jsonify,Blueprint
from sqlalchemy import create_engine, Column, Integer, String, ForeignKey
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base
from models import {剛剛建立的class名稱***1}, {剛剛建立的class名稱***2} # 匯入模型類別
sql = Blueprint('sql', __name__)
# PostgreSQL 連接信息
db_host = '***'
db_port = '***'
db_user = '***'
db_password = '***'
db_name = '***'
# 創建 SQLAlchemy 引擎
db_url = f"postgresql://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}"
engine = create_engine(db_url)
# 定義 ORM 映射
Base = declarative_base()
# 創建一個 Session 類型以進行數據庫交互
Session = sessionmaker(bind=engine)
3.撰寫sql路由,用request方式接查詢條件,用session.query方式撰寫sql查詢,最後關閉
並將查詢結果轉換為 JSON 格式return
sql.py
@sql.route('/query', methods=['GET'])
def query_data():
date = request.args.get('date')
project_id = request.args.get('project_id')
logdate = request.args.get('logdate')
# 創建一個會話對象
session = Session()
# 執行查詢
query_result = session.query(***.logdate, ***.filename, ***.width, ***.height) \
.join(***.***) \
.filter(***.date == date, ***.project_id == project_id, ***.logdate == logdate) \
.limit(500).all()
# 關閉
session.close()
# 將查詢結果轉換為 JSON 格式
result = [{'logdate': row.logdate, 'filename': row.filename, 'width': row.width, 'height': row.height} for row in query_result]
return jsonify(result)
本篇文章介紹了如何使用 SQLAlchemy 和 Flask 來建立一個強大的資料庫查詢應用程式,
並以 PostgreSQL 為例進行實作。SQLAlchemy 是一個功能強大的 Python ORM 庫,
它允許開發者使用 Python 程式碼來操作關聯式資料庫,
同時提供了高度靈活的資料庫操作和查詢功能,使資料庫操作變得更加簡單和可管理。